﻿using System.Collections.Generic;
using NHibernate;
using Neturion.Dados;
using Neturion.IRepositorios;

namespace Neturion.Repositorios
{
    public class RepositorioSistemaPerfilUsuario : IRepositorioSistemaPerfilUsuario
    {
        public SistemaPerfilUsuario Inserir(SistemaPerfilUsuario sistemaPerfilUsuario)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Save(sistemaPerfilUsuario);
            return sistemaPerfilUsuario;
        }

        public SistemaPerfilUsuario Atualizar(SistemaPerfilUsuario sistemaPerfilUsuario)
        {
            SistemaPerfilUsuario tmpSistemaPerfilUsuario = ObterPorId(sistemaPerfilUsuario.SistemaPerfilUsuarioId);
            // Atribuicao dos valores do objeto da memoria para o objeto obtido no banco de dados
            tmpSistemaPerfilUsuario.SistemaPerfil = sistemaPerfilUsuario.SistemaPerfil;
            tmpSistemaPerfilUsuario.Usuario = sistemaPerfilUsuario.Usuario;
            tmpSistemaPerfilUsuario.ListaTelaAcaoUsuario.Clear();
            foreach (TelaAcaoUsuario telaAcaoUsuario in sistemaPerfilUsuario.ListaTelaAcaoUsuario)
            {
                tmpSistemaPerfilUsuario.AdicionarTelaAcaoUsuario(telaAcaoUsuario);
            }

            GerenciadorBDConfigs.Instance.SessaoAtual().Merge(tmpSistemaPerfilUsuario);
            return tmpSistemaPerfilUsuario;
        }

        public void Excluir(SistemaPerfilUsuario sistemaPerfilUsuario)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Delete(sistemaPerfilUsuario);
        }

        public IList<SistemaPerfilUsuario> ObterTodos()
        {
            ICriteria criteria = GerenciadorBDConfigs.Instance.SessaoAtual().CreateCriteria(typeof(SistemaPerfilUsuario));
            return criteria.List<SistemaPerfilUsuario>() as List<SistemaPerfilUsuario>;
        }

        public SistemaPerfilUsuario ObterPorId(int id)
        {
            return GerenciadorBDConfigs.Instance.SessaoAtual().Get<SistemaPerfilUsuario>(id);
        }
    }
}